A computer system typically includes a monitor having a display screen for presenting information, such as text and images, to the user. The display screen can be configured into a window environment in which separate areas of the display screen, called windows, are established. Each window, which is typically rectangular in shape, can present or represent different information or different views of the same information. Examples of popular software systems that employ window environments are the System/7.RTM. operating system developed by Apple Computer, Inc. and the Microsoft Windows .RTM. operating system, which is commercially available from Microsoft Corporation.
A window manager controls the size and position of each window on the display screen. The window manager is a set of system software routines, located within the computer's operating system, that is responsible for managing the windows that the user views during operation of the computer system. The window manager keeps track of the location and size of each window and the window areas that must be drawn and redrawn in response to commands issued by application programs executing on the computer system. These commands, which may include move windows, change window sizes, etc., are generated and sent by the application program to the window manager via application programming interfaces (APIs). APIs typically include a collection of system calls requesting services from the operating system.
Each application program executing on the computer system typically defines a set of windows that are associated with that application. For example, a drawing application may define a window into which a user "draws" images as well as palette windows which contain tools, such as pencil, color, etc., for drawing those images. Similarly, a word processing application may have a window into which text is entered as well as palette windows containing the tools, such as cut, paste, paragraph numbering, etc., available to manipulate the text.
The window manager typically stores these windows in layers defined by and associated with those application programs. A window layer is simply a set of all the windows associated with a single application program. The window manager maintains these window layers in a block of memory.
In addition to controlling the size and position of each window on the display screen, the window manager also controls the front-to-back order of the windows displayed on the display screen. This front-to-back positioning is referred to as the window's "z-order", which is named for the z-axis of a three-dimensional coordinate system, where z is the coordinate extending into the computer screen. In particular, a number is assigned by the operating system to each layer of windows describing its priority class relative to the other window layers. A window layer's priority class defines where in the z-order the window layer can be placed. For example, a window layer of priority class "2", e.g. a screen saver, always appears in front of a window layer of priority class "3", e.g. an application program, while multiple window layers of priority class "3", e.g. a word processing application and a spreadsheet application, can overlie each other in the z-order.
In general, the window manager draws the entire layer of windows associated with a currently executing application program at the front of the computer screen for display to a user, provided that the priority class of the window layer is the same as or higher than the priority class of any other window layer on the display screen. For example, if the user initiates a word processing operation, then the layer of windows associated with a word processing application is brought to the front of the screen. Behind that layer of word processing windows is a layer of windows associated with the last executed application program, such as a drawing application, which is assigned to the same priority class as the word processing layer of windows. Behind the layer of drawing windows is a third layer of windows from the application program used before the drawing application, such as a spreadsheet application.
When a user selects a window that is not displayed on the front of the screen, the window manager brings that window and all of the windows in that layer to the front of the screen, provided that the priority class of the selected window layer is the same as or higher than the window layer being displayed. If, during a word processing task, for example, the user selects a window from the spreadsheet application, the window manager re-draws the screen so that all of the windows from the spreadsheet application are at the front of the screen. This re-drawing of the windows displayed on the screen also alters the z-ordering of windows by placing the spreadsheet layer of windows ahead of the word processing layer of windows.
Such re-positioning of window layers by application program, however, may be annoying to a user wanting to work with only a particular window or windows of the layer. For example, the layer containing the spreadsheet windows may include two data field windows, e.g. D.sub.A and D.sub.B, and three palette windows, P.sub.1, P.sub.2 and P.sub.3, where palette windows P.sub.1 and P.sub.2 contain tools that apply only to data field D.sub.A and palette window P.sub.3 contains tools that apply only to data field D.sub.B. As noted, the window manager arranges all of these windows into a single layer and when the user selects any spreadsheet window, e.g., D.sub.B, all of these windows are brought to the front of the display screen, even though the user may want to work only with window D.sub.B. The screen is thus crowded with many more windows than the user desires.
A programmer could create a predetermined layer of windows "manually", i.e., by having the application program issue individual calls to the window manager to bring particular windows to the front of the display screen. Such a series of distinct procedures, however, results in significant consumption of resources by the operating system and may be distracting to the user as the window environment is altered piece-by-piece. Furthermore, these predetermined layers only include windows defined by that application.